"""
加载PDF文件
PDF中的文本通常通过文本框表示。它们也可能包含图像。PDF解析器可能会执行以下某种组合：
1、通过启发式或机器学习推断将文本框聚合成行、段落和其他结构；
2、对图像运行光学字符识别 (OCR)以检测其中的文本；
3、将文本分类为段落、列表、表格或其他结构；
4、将文本结构化为表格行和列，或键值对。
"""
from langchain_community.document_loaders import PyPDFLoader
from langchain_core.vectorstores import InMemoryVectorStore

from models import get_ollama_embeddings_client

file_path = "../data/document/Transformer论文.en.zh-CN.pdf"

loader = PyPDFLoader(file_path)
pages = []
for page in loader.load():
    pages.append(page)

# 对内容进行向量搜索
"""
文档对象进行向量搜索两种方式：
方式1：Chroma.from_documents(docs, 6-embedding=embedding_model_client)
方式2：InMemoryVectorStore.from_documents(docs, 6-embedding=embeddings_client)
"""
embeddings_client = get_ollama_embeddings_client()
vector_store = InMemoryVectorStore.from_documents(pages[:5], embeddings_client)
docs = vector_store.similarity_search("循环神经⽹络", k=2)
for doc in docs:
    print(f'Page {doc.metadata["page"]}: {doc.page_content[:]}\n')

